# Counter()
from collections import Counter
li = ["Dog","Cat","Mouse",42,"Dog",42,"Cat","Dog"] # 创建一个list
# 统计一个单词在给定的序列中一共出现了多少次（即统计一个list中出现的item次数）
a = Counter(li)
print (a) # Counter({'Dog': 3, 42: 2, 'Cat': 2, 'Mouse': 1})
# 统计一个list中不同单词的数目
print (len(set(li))) # 4
# 对结果进行分组
li = ["Dog","Cat","Mouse","Dog","Cat","Dog","我","爱","我","家"]
a = Counter(li)
print ("{0}:{1}".format(a.values(),a.keys())) # dict_values([3, 1, 1, 1, 2, 2]):dict_keys(['Dog', '家', '爱', 'Mouse', 'Cat', '我'])
print (a.most_common(6)) # [('Dog', 3), ('Cat', 2), ('我', 2), ('家', 1), ('爱', 1), ('Mouse', 1)]
# 找出字符串中出现频率最高的单词
import jieba   # 结巴分词
string = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此，这一领域的研究将涉及自然语言，即人们日常使用的语言，所以它与语言学的研究有着密切的联系，但又有重要的区别。自然语言处理并不是一般地研究自然语言，而在于研制能有效地实现自然语言通信的计算机系统，特别是其中的软件系统。因而它是计算机科学的一部分。"
seg_list = jieba.cut(string) # 分词
print ("/ ".join(seg_list))  # 自然语言/ 处理/ 是/ 计算机科学/ 领域/ 与/ 人工智能/ 领域/ 中/ 的/ 一个/ 重要/ 方向/ 。/ 它/ 研究/ 能/ 实现/ 人/ 与/ 计算机/ 之间/ 用/ 自然语言/ 进行/ 有效/ 通信/ 的/ 各种/ 理论/ 和/ 方法/ 。/ 自然语言/ 处理/ 是/ 一门/ 融/ 语言学/ 、/ 计算机科学/ 、/ 数学/ 于/ 一体/ 的/ 科学/ 。/ 因此/ ，/ 这一/ 领域/ 的/ 研究/ 将/ 涉及/ 自然语言/ ，/ 即/ 人们/ 日常/ 使用/ 的/ 语言/ ，/ 所以/ 它/ 与/ 语言学/ 的/ 研究/ 有着/ 密切/ 的/ 联系/ ，/ 但/ 又/ 有/ 重要/ 的/ 区别/ 。/ 自然语言/ 处理/ 并/ 不是/ 一般/ 地/ 研究/ 自然语言/ ，/ 而/ 在于/ 研制/ 能/ 有效/ 地/ 实现/ 自然语言/ 通信/ 的/ 计算机系统/ ，/ 特别/ 是/ 其中/ 的/ 软件系统/ 。/ 因而/ 它/ 是/ 计算机科学/ 的/ 一部分/ 。
b = Counter(seg_list)        # 统计
print (b)                    # Counter({'的': 11, '自然语言': 7, '。': 6, '，': 6, '是': 4, '研究': 4, '与': 3, '领域': 3, '处理': 3, '计算机科学': 3, '它': 3, '重要': 2, '有效': 2, '通信': 2, '地': 2, '语言学': 2, '能': 2, '实现': 2, '、': 2, '即': 1, '计算机': 1, '日常': 1, '数学': 1, '一体': 1, '研制': 1, '理论': 1, '有': 1, '软件系统': 1, '又': 1, '之间': 1, '而': 1, '所以': 1, '科学': 1, '因此': 1, '涉及': 1, '在于': 1, '语言': 1, '和': 1, '人们': 1, '方法': 1, '因而': 1, '计算机系统': 1, '于': 1, '有着': 1, '人工智能': 1, '特别': 1, '将': 1, '各种': 1, '进行': 1, '不是': 1, '并': 1, '融': 1, '一般': 1, '但': 1, '中': 1, '使用': 1, '一门': 1, '密切': 1, '区别': 1, '一个': 1, '方向': 1, '人': 1, '其中': 1, '一部分': 1, '联系': 1, '这一': 1, '用': 1})
